/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sv.com.intesal.proyecto.controlador;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import sv.com.intesal.clases.abstracts.ControladorAbstract;
import sv.com.intesal.proyecto.bean.TipoCliente;
import sv.com.intesal.proyecto.sql.SQLTipoCliente;

/**
 *
 * @author ejerez
 */
public class TipoClienteControlador  extends ControladorAbstract {

    public void insert(TipoCliente tc) throws Exception {
        try {
            super.setPreparedStatement(SQLTipoCliente.insert);
            super.ps.setString(1, tc.getNombre_tc());
            super.ps.setString(2, super.v.getEstado(tc.getEstado_filtro_tc()));
            super.ps.executeUpdate();

        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    public void update(TipoCliente tc) throws Exception {
        try {
            super.setPreparedStatement(SQLTipoCliente.update);
            super.ps.setString(1, tc.getNombre_tc());
            super.ps.setString(2, super.v.getEstado(tc.getEstado_filtro_tc()));
            super.ps.setInt(3, tc.getCodigo_tc());
            super.ps.executeUpdate();
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    public List<TipoCliente> getTipoClientes() throws Exception {
        List<TipoCliente> lista = new ArrayList<TipoCliente>();
        try {
            this.getExecuteQuery(SQLTipoCliente.getTipoClientes);
            while (super.rs.next()) {
                lista.add(this.getTipoCliente(super.rs));
            }
            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    public List<TipoCliente> getTipoClientesActivos() throws Exception {
        List<TipoCliente> lista = new ArrayList<TipoCliente>();
        try {
            this.getExecuteQuery(SQLTipoCliente.getTipoClientesActivos);
            while (super.rs.next()) {
                lista.add(this.getTipoCliente(super.rs));
            }
            return lista;
        } catch (Exception e) {
            throw new Exception(e);
        } finally {
            super.setCloseConexion();
        }
    }

    private TipoCliente getTipoCliente(ResultSet rs) throws Exception {
        try {
            TipoCliente tc = new TipoCliente();
            tc.setCodigo_tc(rs.getInt("codigo_tc"));
            tc.setNombre_tc(rs.getString("nombre_tc"));
            tc.setEstado_tc(rs.getString("estado_tc"));
            tc.setEstado_filtro_tc(v.getEstado(rs.getString("estado_tc")));
            return tc;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }
}